Ну, вот осталось совсем немножко, и мы увидим колонки. Для того, чтобы увидеть строки и колонки, нам опять нужны переменные.
// переменные для сток ULONG cRowsObtained; HROW rghRows[NUMROWS_CHUNK]; HROW* pRows = &rghRows[0]; char* pRowValues;
NUMROWS_CHUNK я объявил как.
#define NUMROWS_CHUNK 35
Нам нужно инициализировать указатель на строку.
pRowValues = new char[cbRow];
Основной цикл считывания данных.
while (TRUE)
{
pIRowset->GetNextRows(0,0,NUMROWS_CHUNK,&cRowsObtained,&pRows );
if (cRowsObtained == 0) break;
for (ULONG iRow=0; iRow < cRowsObtained; iRow++)
{
pIRowset->GetData(rghRows[iRow], hAccessor, pRowValues);
printf("\t%s\n",&pRowValues[pDBBindings[1].obValue]);
}
}
После использования строку нужно удалить из памяти.
delete [] pRowValues;
Результат работы программы будет вот такой. Колонка с записями.

Как видите кодировать данным образом работу с базой данных не очень приятно. А точнее вообще не приятно. Сложно и долго. Для облегчения работы с OLE DB и были созданы OLE DB Template то есть шаблоны. Они позволяют уменьшить количество кода для работы с OLE DB.